package com.casic.rabbitmq.listener;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
import org.springframework.stereotype.Component;


/**
 * Consumer 限流机制
 * 1.确保ack为手动模式
 * 2.配置属性 listener-container 中 prefetch="1" >

 */
@Component
//public class AskListener implements MessageListener {
public class QosListener implements ChannelAwareMessageListener {
    @Override
    public void onMessage(Message message, Channel channel) throws Exception {

        //1.获取消息
        System.out.println(new String(message.getBody()));

        //2.处理业务逻辑()
        System.out.println("处理业务逻辑");

        /**
         * 设置限流后，一次只取一条数据。
         * 若不设置签收，就不会取剩下的队列
         * */

        //3.手动签收，参数（消息的标签（可以理解为主键），是否签收多条消息）
       // channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
    }
}
